package com.wind.stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * Stream的使用：遍历、匹配
 *
 * @author Wind
 * @date 2021-06-06
 */
public class Test02Stream {
    public static void main(String[] args) {

        List<Integer> list = Arrays.asList(7, 6, 9, 3, 8, 2, 1);

        /*
         1. 顺序遍历
         */
        Stream<Integer> stream = list.stream();
        stream.forEach(t -> {
            System.out.print(t);
        });
        System.out.println();
        // 简化写法
        list.stream().forEach(System.out::print);
        System.out.println();

        /*
         2. 并行遍历：可以理解成多线程
         */
        list.parallelStream().forEach(System.out::print);
        System.out.println();

        /*
         3. 匹配：遍历出符合条件的元素
         */
        // 遍历大于6的元素：思路是 过滤出大于6的元素，再遍历输出
        list.stream().filter(t -> t > 6).forEach(System.out::print);
        System.out.println();
        // 匹配第一个
        Integer int1 = list.stream().findFirst().get();
        System.out.println(int1);
        // 匹配任意（适用于并行流）
        Integer int2 = list.parallelStream().findAny().get();
        System.out.println(int2);
        // 是否包含符合特定条件的元素
        boolean b = list.stream().anyMatch(t -> t == 9);
        System.out.println(b);
    }
}
